﻿using System;
using System.Web;
using ADIGRE.Domain;

namespace ADIGRE.Web.Mvc.Util
{
    public static class Util
    {
        public static bool ValidaData(DateTime data)
        {
            var erro = false;
            if (((data.Month == 4) || (data.Month == 6) || (data.Month == 9) || (data.Month == 11)) && (data.Day > 30))
                erro = true;
            else if (data.Month == 2)
            {
                if ((data.Day > 28) && ((data.Year % 4) != 0))
                    erro = true;
                if ((data.Day > 29) && ((data.Year % 4) == 0))
                    erro = true;
            }
            if (data.Year < 1754)
                erro = true;

            return erro;
        }

        /*
        public static List<SelectListItem> SelectUsuario()
        {
            IUsuarioQuery usuarioRepository = new UsuarioQuery();
            var lst = new List<SelectListItem>();
            foreach (var item in usuarioRepository.GetAllUser().OrderBy(x=>x.Nome))
            {
                lst.Add(new SelectListItem { Text = item.Nome, Value = item.Id.ToString() });
            }

            return lst;
        }

        public static List<SelectListItem> SelectCondicao()
        {
            INHibernateRepository<Condicao> condicaoRepository = new NHibernateRepository<Condicao>();
            var lst = new List<SelectListItem>();
            foreach (var item in condicaoRepository.GetAll().OrderBy(x=>x.NomeCondicao))
            {
                lst.Add(new SelectListItem { Text = item.NomeCondicao, Value = item.Id.ToString() });
            }

            return lst;
        }

        public static List<SelectListItem> SelectAplicacoes(int idContrato)
        {
            INHibernateRepository<Contrato> contratoRepository = new NHibernateRepository<Contrato>();
            var lst = new List<SelectListItem>();
            
            foreach (var item in contratoRepository.Get(idContrato).Aplicacoes.OrderBy(x=>x.Componente.TituloComponente))
            {
                lst.Add(new SelectListItem { Text = item.Componente.TituloComponente, Value = item.Id.ToString() });
            }

            return lst;
        }

        public static List<SelectListItem> SelectOrgaos()
        {
            INHibernateRepository<OrgaosFinanceiros> orgaosRepository = new NHibernateRepository<OrgaosFinanceiros>();
            var lst = new List<SelectListItem>();
            foreach (var item in orgaosRepository.GetAll().OrderBy(x=>x.NomeDoOrgaoFinanceiro))
            {
                lst.Add(new SelectListItem { Text = item.NomeDoOrgaoFinanceiro, Value = item.Id.ToString() });
            }

            return lst;
        }


        public static List<SelectListItem> SelectContrato()
        {
            INHibernateRepository<Contrato> contratoRepository = new NHibernateRepository<Contrato>();
            var lst = new List<SelectListItem>();
            foreach (var item in contratoRepository.GetAll().OrderBy(x=>x.Identificacao))
            {
                lst.Add(new SelectListItem { Text = item.Identificacao, Value = item.Id.ToString() });
            }

            return lst;
        }

        public static List<SelectListItem> SelectReferencia()
        {

            var lst = new List<SelectListItem>();
            lst.Add(new SelectListItem { Text = Referencia.Normal.ToString(), Value = Referencia.Normal.ToString() });
            lst.Add(new SelectListItem { Text = Referencia.Atrasos.ToString(), Value = Referencia.Atrasos.ToString() });
            lst.Add(new SelectListItem { Text = Referencia.Concluido.ToString(), Value = Referencia.Concluido.ToString() });
            lst.Add(new SelectListItem { Text = Referencia.Dificuldades.ToString(), Value = Referencia.Dificuldades.ToString() });

            return lst;
        }

        public static List<SelectListItem> SelectSituacao()
        {

            var lst = new List<SelectListItem>();
            lst.Add(new SelectListItem { Text = StatusDaSituaçao.Amarelo.ToString(), Value = StatusDaSituaçao.Amarelo.ToString() });
            lst.Add(new SelectListItem { Text = StatusDaSituaçao.Verde.ToString(), Value = StatusDaSituaçao.Verde.ToString() });
            lst.Add(new SelectListItem { Text = StatusDaSituaçao.Vermelho.ToString(), Value = StatusDaSituaçao.Vermelho.ToString() });

            return lst;
        }
        */
        public static Usuario GetUsuarioLogado()
        {
            Usuario usuarioLogado = null;
            if (HttpContext.Current.Session["UsuarioLogado"] != null)
            {
                usuarioLogado = (Usuario)HttpContext.Current.Session["UsuarioLogado"];
            }
            return usuarioLogado;
        }

        public static void LogOff()
        {
            HttpContext.Current.Session.Abandon();
        }

        public static void SetUsuarioLogado(Usuario usuario)
        {
            HttpContext.Current.Session["UsuarioLogado"] = usuario;
        }
        /*
        public static bool IsGerente(int reponsavelId)
        {
            return GetUsuarioLogado() != null ? GetUsuarioLogado().Id == reponsavelId : false;
        }

        public static bool IsAdministrador()
        {
            return GetUsuarioLogado() != null ? GetUsuarioLogado().Administrador : false;
        }

        public static List<SelectListItem> SelectComponente()
        {

            INHibernateRepository<Componente> componenteRepository = new NHibernateRepository<Componente>();
            var lst = new List<SelectListItem>();
            foreach (var item in componenteRepository.GetAll().OrderBy(x=>x.TituloComponente).ToList())
            {
                lst.Add(new SelectListItem { Text = item.TituloComponente, Value = item.Id.ToString() });
            }

            return lst;
        }

        public static List<SelectListItem> SelectPrograma()
        {
            INHibernateRepository<Programa> programaRepository = new NHibernateRepository<Programa>();
            var lst = new List<SelectListItem>();
            foreach (var item in programaRepository.GetAll().OrderBy(x => x.Titulo))
            {
                lst.Add(new SelectListItem { Text = item.Titulo, Value = item.Id.ToString() });
            }

            return lst;
        }

        public static List<SelectListItem> SelectEstados()
        {
            INHibernateRepository<Estado> programaRepository = new NHibernateRepository<Estado>();
            var lst = new List<SelectListItem>();
            foreach (var item in programaRepository.GetAll().OrderBy(x => x.Nome))
            {
                lst.Add(new SelectListItem { Text = item.Nome, Value = item.Id.ToString() });
            }

            return lst;
        }

        public static List<SelectListItem> SelectProjetoPresuposto()
        {
            INHibernateRepository<ProjetoPresuposto> projetoPresupostoRepository = new NHibernateRepository<ProjetoPresuposto>();
            var lst = new List<SelectListItem>();
            foreach (var item in projetoPresupostoRepository.GetAll().OrderBy(x => x.Titulo))
            {
                lst.Add(new SelectListItem { Text = item.Titulo, Value = item.Id.ToString() });
            }

            return lst;
        }
        */
    }
}